package com.bawei.a2010douyin;

import androidx.appcompat.app.AppCompatActivity;
import master.flame.danmaku.controller.DrawHandler;
import master.flame.danmaku.danmaku.model.BaseDanmaku;
import master.flame.danmaku.danmaku.model.DanmakuTimer;
import master.flame.danmaku.danmaku.model.IDanmakus;
import master.flame.danmaku.danmaku.model.android.DanmakuContext;
import master.flame.danmaku.danmaku.model.android.Danmakus;
import master.flame.danmaku.danmaku.parser.BaseDanmakuParser;
import master.flame.danmaku.ui.widget.DanmakuView;
import top.littlefogcat.danmakulib.danmaku.Danmaku;
import top.littlefogcat.danmakulib.danmaku.DanmakuManager;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.FrameLayout;

public class DanmakuActivity extends AppCompatActivity {
    private FrameLayout easyDanmukuView;//简单弹幕
    private DanmakuView flameDanmukuView;//烈焰弹幕 注意导包 master.flame
    private EditText et;
    //TODO 1:烈焰弹幕上下文
    private DanmakuContext mDanmakuContext;
    //TODO 2:烈焰弹幕解析器
    private BaseDanmakuParser mBaseDanmakuParser = new BaseDanmakuParser() {
        @Override
        protected IDanmakus parse() {
            return new Danmakus();
        }
    };
    //TODO 3:当activity获得焦点的时候，绘制烈焰弹幕
    @Override
    protected void onResume() {
        super.onResume();
        if(flameDanmukuView != null){
            flameDanmukuView.resume();
        }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_danmaku);
        easyDanmukuView = (FrameLayout) findViewById(R.id.easy_danmuku_view);
        flameDanmukuView = (DanmakuView) findViewById(R.id.flame_danmuku_view);
        et = (EditText) findViewById(R.id.et);
        //TODO 4:烈焰弹幕
        initFlameDanMu();
    }
    //TODO 4:烈焰弹幕
    private void initFlameDanMu() {
        flameDanmukuView.enableDanmakuDrawingCache(true);//缓存
        flameDanmukuView.setCallback(new DrawHandler.Callback() {
            @Override
            public void prepared() {//准备完成
                flameDanmukuView.start();//启动
                //TODO 5:发送弹幕
                sendFlameDanMu("你好吗",1000);
                sendFlameDanMu("我不好",3000);
                sendFlameDanMu("前方高能预警",5000);
                sendFlameDanMu("集齐1000赞",8000);
            }

            @Override
            public void updateTimer(DanmakuTimer timer) {

            }

            @Override
            public void danmakuShown(BaseDanmaku danmaku) {

            }

            @Override
            public void drawingFinished() {

            }
        });//回调
        mDanmakuContext = DanmakuContext.create();//获得上下文
        flameDanmukuView.prepare(mBaseDanmakuParser,mDanmakuContext);//准备
    }
    //TODO 5:发送烈焰弹幕
    public void sendFlameDanMu(String str,long time){
        BaseDanmaku danmaku = mDanmakuContext.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_RL);//从右向左
        danmaku.text = str;
        danmaku.textColor = Color.GREEN;
        danmaku.borderColor = Color.RED;
        danmaku.textSize = 50;
        danmaku.setTime(time);//设置显示的时间
        flameDanmukuView.addDanmaku(danmaku);
    }





    //发送简单弹幕
    public void send(View view) {
        DanmakuManager.getInstance().init(this,easyDanmukuView);//初始化
        Danmaku danmaku = new Danmaku();
        danmaku.color = "#F44336";//颜色
        danmaku.text = et.getText().toString();//文字
        danmaku.size = 100;//大小
        danmaku.mode = Danmaku.Mode.scroll;//模式
        DanmakuManager.getInstance().send(danmaku);
    }
}